/*************************************************************************/
/** Copyright.															**/
/** FileName: GUI_ScrollBar.c											**/
/** Author: XuYulin														**/
/** Version: 1.0.0.0													**/
/** Description: Create and display a scrollbar on screen.				**/
/** History:															**/
/**	XuyYulin	2017/2/27	2.0.0.0		New create.						**/
/** XuYulin 2017/2/27 1.0 build this moudle								**/
/*************************************************************************/

//=======================================================================//
//= Include files.													    =//
//=======================================================================//
#include "GUI_Basic.h"
#include "GUI_ScrollBar.h"

//=======================================================================//
//= Static variable declaration.									    =//
//=======================================================================//

//=======================================================================//
//= Static function declaration.									    =//
//=======================================================================//

//=======================================================================//
//= Function implementation.										    =//
//=======================================================================//
/*************************************************************************/
/** Function Name:	GUI_UpdateScrollBar									**/
/** Purpose:		Display or update a scroll bar.						**/
/** Resources:		Scroll bar data structure.							**/
/** Params:																**/
/** @uiPosX:			X position.										**/
/** @uiPosY:			Y position.										**/
/** @uiHeight:			Scrollbar height.								**/
/**	@uiMaxIndex:		Count of scroll items index, it start form 0.	**/
/**	@uiIndex:			New scroll bar value.							**/
/** Return:			None.												**/
/** Notice:			None.												**/
/*************************************************************************/
void GUI_UpdateScrollBar(uint16_t uiPosX, uint16_t uiPosY, uint16_t uiHeight, uint16_t uiMaxIndex, uint8_t uiIndex)
{
	uint8_t	uiScrollBlockCoodinate;
	if(uiHeight > 6)
	{
		// Check new value must be less then max value.
		if(uiIndex > uiMaxIndex)
		{
			uiIndex = uiMaxIndex;
		}
		// Draw scroll bar edge.
		GUI_Basic_DrawRectangle(	uiPosX, uiPosY,
							SCROLLBAR_BAR_WIDTH, uiHeight,
							GUI_COLOR_FRGCLR, GUI_COLOR_BKGCLR);
		// Value lower limit is 0, scroll blocks must be greater then 0.
		if(uiMaxIndex > 0)
		{
			uiScrollBlockCoodinate = uiPosY+1+((uiHeight-2-SCROLLBAR_BLOCK_SIZE)*uiIndex/uiMaxIndex);
			// Redraw process block
			GUI_Basic_DrawRectangle(	uiPosX+1, uiScrollBlockCoodinate,
								SCROLLBAR_BLOCK_SIZE, SCROLLBAR_BLOCK_SIZE, GUI_COLOR_FRGCLR, GUI_COLOR_FRGCLR);
		}
	}
}
